home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 9 / CDACTUAL9.iso / share / Dos / VARIOS / pascal / SWAG9605.DDD / 0149_Get info about EXE file.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1996-05-31  |  1.1 KB  |  48 lines

  1. unit exeend;
  2.  
  3. INTERFACE
  4.  
  5. var
  6.   endofexe,sizeofdata:longint;
  7.   data:boolean;
  8.  
  9. function getexeinfo(const name:string;var data:boolean; var endofexe,sizeofdata:longint):boolean;
  10.  
  11. IMPLEMENTATION
  12.  
  13. function getexeinfo(const name:string; var data:boolean; var endofexe,sizeofdata:longint):boolean;
  14. const
  15.   magic=$5a4d; {'mz'}
  16. var
  17.   header:array[1..3]of word; {id,bytemod,pages}
  18.   br:word;
  19.   f:file;
  20. begin
  21.   getexeinfo:=false;
  22.   data:=false;
  23.   endofexe:=0;
  24.   sizeofdata:=0;
  25.   if(name='.')or(name='')then exit;
  26.   assign(f,name);
  27.   {$i-} reset(f,1); {$i+}
  28.   if(ioresult<>0)then exit;
  29.   {$i-} blockread(f,header,sizeof(header),br); {$i+}
  30.   if(ioresult<>0)then exit;
  31.   if(br<>sizeof(header))or(header[1]<>magic)then exit;
  32.   endofexe:=longint(header[3]-1)*512+header[2];
  33.   sizeofdata:=(filesize(f)-endofexe);
  34.   close(f);
  35.   data:=(sizeofdata>0);
  36.   getexeinfo:=true;
  37. end;
  38.  
  39. function dosmajor:byte; assembler;
  40. asm
  41.   mov ah,030h
  42.   int 21h
  43. end;
  44.  
  45. begin
  46.   if(dosmajor>=3)then getexeinfo(paramstr(0),data,endofexe,sizeofdata)else
  47.      getexeinfo('.',data,endofexe,sizeofdata);
  48. end.